﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Human
{
    class Human
    {

        //1) Создать класс Human.В классе определить поля -Имя, Фамилия, Дата рождения.
        //Имя и фамилия не могут быть null. Дата рождения не может быть из будущего. 
        //Реализовать свойства для установки и считывания значений полей.
        //Создать конструктор позволяющий установить значения полей класса при создании.
        //Создать 2 экземпляра класса. Вывести значение полей экземпляров на экран.

        private string firstName;
        private string lastName;
        private DateTime birthDate;

        public Human(string firstName, string lastName, DateTime birthDateburthDate)
        {
            FirstName = firstName;
            LastName = lastName;
            BirthDate = birthDate;
        }

        public string FirstName
        {
            set
            {
                try
                {
                    if (String.IsNullOrEmpty(value))
                    {
                        throw new ArgumentNullException();
                    }
                    else
                    {
                        firstName = value;
                    }
                }

                catch (ArgumentNullException e)
                {
                    Console.WriteLine(e.Message);
                    firstName = "Name"+rndGen.Next(0, 100);
                }

            }
            get
            {
                return firstName;
            }
        }

        public string LastName
        {
            set
            {
                try
                {
                    if (String.IsNullOrEmpty(value))
                    {
                        throw new ArgumentNullException();
                    }
                    else
                    {
                        lastName = value;
                    }
                }
                catch (ArgumentNullException e)
                {
                    Console.WriteLine(e.Message);
                    lastName = "lastName"+rndGen.Next(0,100);
                }

            }
            get
            {
                return lastName;
            }
        }

        public DateTime BirthDate
        {
            set
            {
                try
                {
                    if (value > DateTime.Now)
                    {
                        throw new ArgumentOutOfRangeException();
                    }
                    else
                    {
                        birthDate = value;
                    }
                }
                catch (ArgumentOutOfRangeException e)
                {
                    Console.WriteLine(e.Message);
                    birthDate = DateTime.Now;
                }
            }
            get
            {
                return birthDate;
            }
        }
        public static Random rndGen = new Random();

        public void PrintToConsole ()
        {
            Console.WriteLine("Person1: {0} {1} {2}", FirstName, LastName, BirthDate.ToString("dd/MM/yyyy"));
        }
    }
}
